package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.BaseBuildInfo;
import com.softer.wxzj.entity.BaseModifyDetail;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;

/**
 * SysOperatorService class
 *
 * @author zcz
 * @date 2019/1/16
 */
public interface BaseBuildInfoService extends BaseService<BaseBuildInfo> {
    /**
     * 修改保存新旧数据
     *
     * @param baseBuildInfo
     * @return
     * @throws Exception
     */
    public CommonResult updateToSave(BaseBuildInfo baseBuildInfo) throws Exception;

    /**
     * 保存并提交
     *
     * @param id
     * @return
     */
    public CommonResult insertSaveAndSubmit(String id);

    /**
     * 获取待审批自然幢添加列表
     *
     * @param page
     * @param baseBuildInfo
     * @return
     */
    PageInfo<BaseBuildInfo> getAuditList(Page page, BaseBuildInfo baseBuildInfo, String flowType);

    /**
     * 添加审批流程
     *
     * @param
     */
    CommonResult addAudit(String businessId, String opinion, String mark);

    /**
     * 自然幢变更审核
     *
     * @param id
     * @param opinion
     * @param mark
     * @return
     */
    CommonResult changeResidentialCommittee(String id, String opinion, String mark);

    /**
     * 模糊查询自然幢信息列表
     *
     * @param page      分页实体
     * @param param     模糊查询参数
     * @param flowState 状态
     * @return 自然幢信息
     */
    PageInfo<BaseBuildInfo> fuzzySearch(Page page, String param, String flowState, String no);

    /**
     * 根据小区ID模糊查询自然幢信息列表
     *
     * @param page      分页实体
     * @param param     模糊查询参数
     * @param id        小区ID
     * @param flowState 状态
     * @return 自然幢信息
     */
    PageInfo<BaseBuildInfo> fuzzySearchByRegionId(Page page, String param, String id, String flowState);

    CommonResult checkBuildName(String buildName, String regionId, String id);

    /**
     * 业主销户列表
     */
    List<BaseBuildInfo> getListAndOwnerOut(BaseBuildInfo baseBuildInfo);

    /**
     * 查询自然幢列表，用在批量退款
     *
     * @param page
     * @param baseBuildInfo
     * @return
     */
    PageInfo<BaseBuildInfo> getListToBatchRef(Page page, BaseBuildInfo baseBuildInfo);

    /**
     * 根据小区ID查询自然幢列表
     *
     * @param regionId    小区ID
     * @param subRegionId 分区ID
     * @return 自然幢列表
     */
    List<BaseBuildInfo> getBuildList(String regionId, String subRegionId);

    /**
     * 查询变更详情
     *
     * @param page
     * @param id
     * @return
     */
    PageInfo<BaseModifyDetail> getModifyDetailList(Page page, String id);

    /**
     * 模糊查询自然幢审核列表
     *
     * @param baseBuildInfo 查询实体
     * @return 待审核列表
     */
    PageInfo<BaseBuildInfo> fuzzyAuditList(Page page, BaseBuildInfo baseBuildInfo);

    /**
     * 生成财务编号
     *
     * @param baseBuildInfo
     * @return
     */
    String financeNo(BaseBuildInfo baseBuildInfo);

    /**
     * 添加到basebuild表
     *
     * @param baseBuildInfo
     * @return
     */
    BaseBuildInfo addBuild(BaseBuildInfo baseBuildInfo);

    /**
     * 查询列表
     *
     * @param page
     * @param baseBuildInfo
     * @return
     */
    PageInfo<BaseBuildInfo> getBuildingReq(Page page, BaseBuildInfo baseBuildInfo);

    /**
     * 查询详情（中文）
     *
     * @return
     */
    BaseBuildInfo getInfoBuild(String id);

    BaseBuildInfo getInfoById(String id, String arcType);
    /**
     * 外网获取自然幢列表
     *
     * @param regionId 小区ID
     * @return 自然幢列表
     */
    PageInfo<BaseBuildInfo> getOuterNetBuildList(Page page,String regionId);
}
